---
title: Stablecoins on Sui
sidebar_label: Stablecoins
description: Stablecoins are a type of cryptocurrency that are designed to maintain a stable value relative to a fiat currency or a basket of assets. 
keywords: [ stablecoins, USDT, tether, agora, USDC, USD coin, AUSD, ondo USDY, USDY, using stablecoins, stablecoins in ptbs, ptbs, programmable transaction blocks, stablecoins in programmable transaction blocks ]
pagination_prev: null
draft: true
---

Stablecoins are a type of cryptocurrency that are designed to maintain a stable value relative to a fiat currency or a basket of assets. They are widely used for trading, lending, and as a store of value. 

## Available stablecoins

On Sui, you can interact with various stablecoins such as USDC, USDT, Agora, and Ondo USDY.

### USDC (USD Coin)

USDC is a fully collateralized US dollar stablecoin issued by regulated financial institutions. Each USDC token is backed by one US dollar held in reserve. USDC is widely used for trading, payments, and as a stable store of value.

For more detailed information on how to interact with USDC on Sui, refer to the [USDC guide](#usdc-guide).

**Site:** [Circle](https://www.circle.com/en/usdc)

### USDT (Tether)

USDT, also known as Tether, is one of the oldest and most widely used stablecoins. It is pegged to the US dollar and is backed by a mix of reserves, including cash, cash equivalents, and other assets.

USDT is currently not issued natively on Sui. For more information on bridging USDT to Sui, refer to [SUI Bridging](../../concepts/tokenomics/sui-bridging.mdx).

**Site:** [Tether](https://tether.to/)

### Agora

AUSD is a fully collateralized US dollar stablecoin issued by Agora Finance.

**Site:** [Agora Finance](https://www.agora.finance/)

### Ondo USDY
USDY is a fully collateralized US dollar stablecoin issued by Ondo Finance, allowing users to earn yield from US Treasury Bills.

**Site:** [Ondo Finance](https://ondo.finance/)

## How to use USDC on Sui {#usdc-guide}

:::info
While this example uses USDC, the same principles can be applied to any asset on Sui that uses the [Sui Currency Standard](/standards/currency.mdx).
:::


<Tabs className="tabsHeadingCentered--small--small">
<TabItem value="prereq" label="Prerequisites">

- [x] [Install the latest version of Sui](/guides/developer/getting-started/sui-install).

- [x] Make sure you have some USDC tokens. Get Testnet tokens from Circle's [faucet](https://faucet.circle.com/).

</TabItem>
</Tabs>

### USDC stablecoin source code

The USDC stablecoin source code is available in the [circlefin/stablecoin-sui](https://github.com/circlefin/stablecoin-sui/blob/master/packages/usdc/sources/usdc.move) repository.

### Import the USDC module in your Move package

To import the USDC module, add the following line to the `[dependencies]` section of your Move package's `Move.toml` file:

```toml
usdc = { git = "https://github.com/circlefin/stablecoin-sui.git", subdir = "packages/usdc", rev = "master" }
```

After importing the module, your Move package should look like the following:

<ImportContent source="examples/move/usdc_usage/Move.toml" mode="code" />

:::warning
The `usdc` package uses a specific version of the `sui` package, which causes a version conflict with the `Sui` package in the Sui framework. You can override the version of the `Sui` package in your `Move.toml` file to use a different version. Add the `override = true` flag to the `Sui` package in your `Move.toml` file.
:::

### Using USDC in Move

USDC uses the [Sui Currency Standard](/standards/currency.mdx) and can be used just like any other coin type in the Sui framework.

After importing the `usdc` package, you can use the `USDC` type.

```move
use usdc::usdc::USDC;
```

Then use the `USDC` type just as you would use the `SUI` type when accepting a `Coin<SUI>` parameter.

<ImportContent source="examples/move/usdc_usage/sources/example.move" mode="code" fun="buy_sword_with_usdc" />

The following example demonstrates how to use the USDC stablecoin in a Move package and how it relates to using the `SUI` type as well as any generic coin types.

<ImportContent source="examples/move/usdc_usage/sources/example.move" mode="code" />

### Using USDC in PTBs

Use USDC in your [PTBs](/guides/developer/sui-101/building-ptb) just like any other coin type.

Create a `Coin<USDC>` object with the `coinWithBalance` function.

```typescript
const usdcCoin = coinWithBalance({
  type: '0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29::usdc::USDC',
  balance: 1_000_000
})
```

:::info
`0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29` is the [Testnet address](https://suiscan.xyz/testnet/coin/0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29::usdc::USDC) for USDC, while `0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7` is the [Mainnet address](https://suiscan.xyz/coin/0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC).
:::

This coin object can be used as a parameter for any function that accepts a `Coin<USDC>` parameter or a generic `Coin` parameter.

```typescript
const [sword] = tx.moveCall({
  target: '0xcbbf37a851ed7b625731ca497e2d4aea18cf18145fac3b78bd64f274f6a09d30::usdc_usage::buy_sword_with_usdc', 
  arguments: [
    usdcCoin
  ]
});
```

```typescript
const [sword] = tx.moveCall({
  target: '0xcbbf37a851ed7b625731ca497e2d4aea18cf18145fac3b78bd64f274f6a09d30::usdc_usage::buy_sword_with_arbitrary_coin', 
  typeArguments: ['0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29::usdc::USDC'],
  arguments: [
    usdcCoin
  ]
});
```

This coin object can also be used as input for the `transferObjects` function.

```typescript
tx.transferObjects([usdcCoin], recipientAddress);
```

## Related links

<RelatedLink to="/guides/developer/coin/regulated.mdx" />
<RelatedLink to="/guides/developer/coin/loyalty.mdx" />
<RelatedLink to="/guides/developer/coin/in-game-token.mdx" />
